# RVC Controller SW — Use Case Specification (Brief Format)

| 항목 | 내용 |
|------|------|
| 문서 번호 | RVC-UC-001 |
| 버전 | v1.0 |
| 작성일 | 2026-05-19 |
| 작성자 | OOAD Team |
| 상태 | 초안 (Draft) |

---

## 변경 이력 (Change History)

| 버전 | 날짜 | 변경 내용 | 작성자 |
|------|------|-----------|--------|
| v1.0 | 2026-05-19 | 최초 작성 — FR 기반 Brief Format Use Case 도출 | OOAD Team |

---

## 1. Actor 정의

| Actor | 분류 | 설명 |
|-------|------|------|
| **RVC System** | Primary Actor | 자동 청소를 수행하는 로봇 청소기 시스템 |
| **Obstacle Sensor** | Supporting Actor | 전방·좌측·우측 장애물 감지 센서 |
| **Dust Sensor** | Supporting Actor | 먼지 감지 센서 |

> RVC는 완전 자율 시스템으로, 사람(Human Actor)이 직접 개입하는 Use Case는 존재하지 않는다.

---

## 2. Use Case 목록

| UC ID | Use Case 명 | 관련 FR |
|-------|-------------|---------|
| UC-01 | Perform Normal Cleaning | FR-MOV-01, FR-CLN-01 |
| UC-02 | Detect Obstacle (Front) | FR-SEN-01, FR-SEN-05 |
| UC-03 | Avoid Front Obstacle | FR-MOV-02, FR-MOV-03, FR-MOV-04 |
| UC-04 | Detect Obstacle (Left & Right) | FR-SEN-02, FR-SEN-03, FR-SEN-05 |
| UC-05 | Avoid All-Direction Obstacle | FR-MOV-05, FR-MOV-06, FR-MOV-07 |
| UC-06 | Detect Dust | FR-SEN-04, FR-SEN-05 |
| UC-07 | Boost Cleaning Power | FR-CLN-02, FR-CLN-03, FR-CLN-04 |
| UC-08 | Handle Sensor Error | NFR-REL-01, NFR-SAF-02 |

---

## 3. Use Cases (Brief Format)

---

### UC-01: Perform Normal Cleaning

**Actor:** RVC System  
**Summary:**  
RVC는 시작 후 아무 장애물·먼지 이벤트가 없는 정상 상태에서 직진하며 청소(흡입·걸레질)를 지속적으로 수행한다.

---

### UC-02: Detect Obstacle (Front)

**Actor:** Obstacle Sensor → RVC System  
**Summary:**  
전방 센서가 장애물을 감지하면 센서 데이터를 Controller에 즉시 전달하여 장애물 존재를 알린다.

---

### UC-03: Avoid Front Obstacle

**Actor:** RVC System  
**Trigger:** UC-02 (전방 장애물 감지)  
**Summary:**  
전방 장애물 감지 시 RVC는 이동을 정지하고, 좌측 또는 우측으로 방향을 전환한 뒤 전진을 재개하여 청소를 계속한다. 방향 전환 방향(좌/우)은 좌·우 센서 상태에 따라 결정된다.

---

### UC-04: Detect Obstacle (Left & Right)

**Actor:** Obstacle Sensor → RVC System  
**Summary:**  
좌측 및 우측 센서가 장애물을 감지하면 해당 정보를 Controller에 전달한다. UC-03 실행 중 방향 결정 또는 UC-05 진입 조건 판단에 활용된다.

---

### UC-05: Avoid All-Direction Obstacle

**Actor:** RVC System  
**Trigger:** UC-02 + UC-04 동시 감지 (전방·좌·우 모두 장애물)  
**Summary:**  
전방·좌측·우측 모두 장애물이 감지된 경우 RVC는 후방으로 이동한 뒤, 좌측 또는 우측으로 방향을 전환하고 전진을 재개하여 청소를 계속한다.

---

### UC-06: Detect Dust

**Actor:** Dust Sensor → RVC System  
**Summary:**  
먼지 센서가 먼지를 감지하면 해당 데이터를 Controller에 즉시 전달하여 고농도 먼지 존재를 알린다.

---

### UC-07: Boost Cleaning Power

**Actor:** RVC System  
**Trigger:** UC-06 (먼지 감지)  
**Summary:**  
먼지 감지 시 RVC는 청소 파워를 즉시 증가시키고, 설정된 시간이 경과하면 기본 청소 파워로 자동 복귀한다. 파워 부스트 중에도 이동 및 청소는 중단 없이 계속된다.

---

### UC-08: Handle Sensor Error

**Actor:** Obstacle Sensor / Dust Sensor → RVC System  
**Summary:**  
센서에서 비정상 값(범위 초과, 통신 오류 등)이 수신되면 RVC는 해당 값을 무시하고 이전 유효 상태를 유지한다. 오류가 지속되면 안전을 위해 이동을 정지한다.

---

## 4. Use Case 관계도 (텍스트)

```
[Obstacle Sensor] --감지--> (UC-02: Detect Obstacle Front)
                                    |
                             <<trigger>>
                                    |
                            (UC-03: Avoid Front Obstacle)
                                    |
                     [좌/우 모두 막힌 경우] <<extend>>
                                    |
                            (UC-05: Avoid All-Direction Obstacle)

[Obstacle Sensor] --감지--> (UC-04: Detect Obstacle Left & Right)
                                    |
                             <<include>> into UC-03, UC-05

[Dust Sensor]     --감지--> (UC-06: Detect Dust)
                                    |
                             <<trigger>>
                                    |
                            (UC-07: Boost Cleaning Power)

[RVC System]      ---------> (UC-01: Perform Normal Cleaning)
                                    |
                         <<include>> UC-03, UC-05, UC-07

[Sensor (any)]    --오류--> (UC-08: Handle Sensor Error)
```

---

## 5. FR ↔ Use Case 추적 매트릭스

| FR ID | Use Case |
|-------|----------|
| FR-MOV-01 | UC-01 |
| FR-MOV-02 | UC-03 |
| FR-MOV-03 | UC-03 |
| FR-MOV-04 | UC-03 |
| FR-MOV-05 | UC-05 |
| FR-MOV-06 | UC-05 |
| FR-MOV-07 | UC-05 |
| FR-SEN-01 | UC-02 |
| FR-SEN-02 | UC-04 |
| FR-SEN-03 | UC-04 |
| FR-SEN-04 | UC-06 |
| FR-SEN-05 | UC-02, UC-04, UC-06 |
| FR-SEN-06 | UC-08 |
| FR-CLN-01 | UC-01 |
| FR-CLN-02 | UC-07 |
| FR-CLN-03 | UC-07 |
| FR-CLN-04 | UC-07 |
